# Maintainer: Alexey Pavlov <Alexpux@gmail.com>
# Contributor: Renato Silva <br.renatosilva@gmail.com>

_realname=libiconv
pkgbase=mingw-w64-${_realname}
pkgname=(${MINGW_PACKAGE_PREFIX}-${_realname} ${MINGW_PACKAGE_PREFIX}-iconv)
license=('spdx:GPL-3.0-or-later')
pkgdesc='Character encoding conversion library and utility (mingw-w64)'
pkgver=1.17
pkgrel=3
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
url='https://www.gnu.org/software/libiconv/'
source=("https://ftp.gnu.org/pub/gnu/${_realname}/${_realname}-${pkgver}.tar.gz"{,.sig}
        0004-fix-makefile-devel-assuming-gcc.patch
        0003-add-cp65001-as-utf8-alias.patch
        0002-fix-cr-for-awk-in-configure.all.patch
        fix-pointer-buf.patch
        iconv.pc)
sha256sums=('8f74213b56238c85a50a5329f77e06198771e70dd9a739779f4c02f65d971313'
            'SKIP'
            '2f08ca8681e4c85cdb2e6835921a502fd623dee4bf8ca10aa3c66747ede58a47'
            'cb2b1cca44c9b9bd11c3bd33997c10d22dff263542275324c88f34b59910ef87'
            '89d5c0f666e50a0186cfb142ba7b77e8fe1ac4d65bdfd9ae14ae8d2f0045a87c'
            '6b6e2393840f4dc6067587165777b1a07978f4c05247d7c1010a45ad251bbeeb'
            '56e7ec406bf42eb66b1d972f20d229f7a76ba00c38c7b4403bf348875704baae')
validpgpkeys=('9001B85AF9E1B83DF1BDA942F5BE8B267C6A406D')  # "Bruno Haible (Open Source Development) <bruno@clisp.org>"
options=('!libtool' 'staticlibs')
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-autotools"
             "${MINGW_PACKAGE_PREFIX}-gperf")

apply_patch_with_msg() {
  for _patch in "$@"
  do
    msg2 "Applying ${_patch}"
    patch -Nbp1 -i "${srcdir}/${_patch}"
  done
}

regenerate_files() {
  msg2 "Regenerating autogenerated files"
  make -f Makefile.devel all
}

prepare() {
  cd "${srcdir}/${_realname}-${pkgver}"
  apply_patch_with_msg \
    0002-fix-cr-for-awk-in-configure.all.patch \
    fix-pointer-buf.patch \
    0003-add-cp65001-as-utf8-alias.patch \
    0004-fix-makefile-devel-assuming-gcc.patch
  regenerate_files
}

build() {
  [[ -d "${srcdir}/build-${MSYSTEM}" ]] && rm -rf "${srcdir}/build-${MSYSTEM}"
  mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}"

  ../${_realname}-${pkgver}/configure \
    --prefix=${MINGW_PREFIX} \
    --build=${MINGW_CHOST} \
    --host=${MINGW_CHOST} \
    --target=${MINGW_CHOST} \
    --docdir=${MINGW_PREFIX}/share/doc/libiconv \
    --enable-static \
    --enable-shared \
    --enable-extra-encodings \
    --enable-relocatable \
    --disable-rpath \
    --enable-silent-rules \
    --enable-nls

  make
}

check() {
  cd "${srcdir}/build-${MSYSTEM}"
  make check || msg2 "tests failed"
}

package_libiconv() {
  pkgdesc='Character encoding conversion library (mingw-w64)'
  license=('spdx:LGPL-2.1-or-later' documentation:'spdx:GPL-3.0-or-later') # This is LGPL except for documentation, see README

  cd "${srcdir}/build-${MSYSTEM}"
  make install DESTDIR="${pkgdir}"
  rm -fr "${pkgdir}${MINGW_PREFIX}"/bin/*.exe
  rm -f  "${pkgdir}${MINGW_PREFIX}"/lib/charset.alias
  rm -fr "${pkgdir}${MINGW_PREFIX}"/share/locale
  rm -f  "${pkgdir}${MINGW_PREFIX}"/share/doc/libiconv/*.1.*
  rm -fr "${pkgdir}${MINGW_PREFIX}"/share/man/man1

  # Pkg-config file
  install -Dm644 "${srcdir}/iconv.pc"  "${pkgdir}${MINGW_PREFIX}/lib/pkgconfig/iconv.pc"
  sed -e "s|@PREFIX@|${MINGW_PREFIX}|g" \
      -e "s|@VERSION@|${pkgver}|g" \
      -i "${pkgdir}${MINGW_PREFIX}/lib/pkgconfig/iconv.pc"

  # Licenses
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/README"                 "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/README"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING"                "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING.LIB"            "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING.LIB"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/libcharset/COPYING.LIB" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/libcharset/COPYING.LIB"
}

package_iconv() {
  pkgdesc='Character encoding conversion utility (mingw-w64)'
  depends=("${MINGW_PACKAGE_PREFIX}-libiconv=${pkgver}-${pkgrel}"
           "${MINGW_PACKAGE_PREFIX}-gettext")
  license=('spdx:GPL-3.0-or-later')

  cd "${srcdir}/build-${MSYSTEM}"
  make install DESTDIR="${pkgdir}"
  rm -f  "${pkgdir}${MINGW_PREFIX}"/bin/*.dll
  rm -fr "${pkgdir}${MINGW_PREFIX}"/include
  rm -fr "${pkgdir}${MINGW_PREFIX}"/lib
  rm -f  "${pkgdir}${MINGW_PREFIX}"/share/doc/libiconv/*.3.*
  rm -fr "${pkgdir}${MINGW_PREFIX}"/share/man/man3

  # Licenses
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/README"  "${pkgdir}${MINGW_PREFIX}/share/licenses/iconv/README"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/iconv/COPYING"
}

# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :

# generate wrappers
for _name in "${pkgname[@]}"; do
  _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
  _func="$(declare -f "${_short}")"
  eval "${_func/#${_short}/package_${_name}}"
done
# template end;
